package com.zjsru.plan2024.normal;

/**
 * 3216. 交换后字典序最小的字符串
 * @Author: cookLee
 * @Date: 2024-10-30
 */
public class GetSmallestString {

    /**
     * 主
     * \
     * 输入： s = "45320"
     * 输出： "43520"
     * 解释：
     * s[1] == '5' 和 s[2] == '3' 都具有相同的奇偶性，交换它们可以得到字典序最小的字符串。
     * \
     * 输入： s = "001"
     * 输出： "001"
     * 解释：
     * 无需进行交换，因为 s 已经是字典序最小的。
     * @param args args
     */
    public static void main(String[] args) {
        GetSmallestString getSmallestString = new GetSmallestString();
        String s = "45320";
        System.out.println(getSmallestString.getSmallestString(s));
    }

    /**
     * 获取最小字符串
     *
     * @param s s
     * @return {@link String}
     */
    public String getSmallestString(String s) {
        int len = s.length();
        char[] array = s.toCharArray();
        for (int i = 1; i < len; i++) {
            // 如果当前字符比前一个字符小，并且当前字符和前一个字符的奇偶性相同，则交换
            if(array[i] < array[i-1] && array[i] % 2 == array[i - 1] % 2){
                char temp = array[i];
                array[i] = array[i - 1];
                array[i - 1] = temp;
                //仅一次
                break;
            }
        }
        return new String(array);
    }

}
